Создание базового проекта с прошивкой ПЛИС в Vivado

Создание проекта в Системе Автоматизированного Проектирования (САПР)

  1. Запустить Vivado 2019.2
  2. Нажать Create Project
  3. В открывшемся окне нажать Next
  4. Ввести название проекта (никаких пробелов и кириллических символов) → Выбрать папку для проектов (создать каталок на D:/) → Поставить галку Create project subdirectory → Нажать Next
  5. Выбрать RTL Project → Поставить галку Do not specify sources at this time → Нажать Next
  6. Выставить фильтры, для сужения списка ПЛИС:
    • Family: Artix 7
    • Package: CSG324,
    • Speed: -1.
Скриншот окна с выставленными фильтрами

../.pic/Vivado%20Basics/Vivado%20trainer/fig_01.png

  1. В списке выбрать ПЛИС xc7a100tcsg324-1 → Нажать Next
  2. Нажать Finish
  3. Закрыть Vivado
  4. Удалить папку
  5. Повторить все действия самостоятельно

Создание модуля на SystemVerilog

  1. Создать новый SystemVerilog файл, для этого в окне Sources нажать на кнопку +
  2. В открывшемся окне выбрать Add or create design source → Нажать Next
  3. Нажать Create File → В открывшемся окне ввести имя модуля top и выбрать тип файла SystemVerilog → Нажать OK → В оставшемся окне нажать Finish
  4. В открывшемся окне НЕ вводить названия портов и сразу нажать OK → После чего подтвердить выбор Yes
  5. Двойным кликов в окне Source открыть файл top.sv
  6. Написать следующий код:
module top (
  input  logic clk,
  input  logic a,
  input  logic b,
  output logic q
);

logic c;

assign c = a ^ b;

always_ff @(posedge clk) begin
 q <= c;
end

endmodule
  1. Сохранить изменения
  2. Нажать Open Elaborated Design
  3. Нажать Schematic в открывшемся списке
  4. Проанализировать полученный результат (сопоставить с SystemVerilog-описанием)
  5. Закрыть проект

Реализация простого проекта на отладочном стенде

  1. Создать новый проект
  2. Создать новый SystemVerilog файл с названием basic
  3. Написать следующий код:
module basic (
  input  logic [15:0] SW,
  output logic [15:0] LED
);

assign LED[0] = SW[0] & SW[1];
assign LED[2] = SW[2] | SW[3];
assign LED[4] = SW[4] ^ SW[5];
assign LED[10:6] = ~SW[10:6];
assign LED[13:11] = {SW[11], SW[12], SW[13]};
assign LED[15:14] = { 2{SW[14]} };

endmodule

  1. Сохранить изменения
  2. В окне Sources нажать на кнопку +
  3. В открывшемся окне выбрать Add or create constraints → Нажать Next
  4. Нажать Create File → В открывшемся окне ввести название → Нажать OKFinish
  5. В окне Source в открывающемся списке Constraints найти только что созданный файл и открыть его для редактирования двойным щелчком
  6. Скопировать содержимое файла констрейнов с официального сайта и вставить в только что созданный → Найти строки посвященные SW и LED и раскомментировать их → Сохранить изменения
  7. Run Synthesis
  8. Run Implementation
  9. После успешной имплементации нажимаем Generate Bitstream для генерации файла прошивки
  10. Аккуратно достаем и подключаем стенд к компьютеру → Включаем питание на плате
  11. Нажимаем Open Hardware Manager (под Generate Bitstream)
  12. Вместо окна Source будет отображаться окно Hardware, в нем необходимо нажать кнопку Auto Connect (единственная активная кнопка) → В окне появится подключенное устройство
  13. Нажать правой кнопкой на устройстве xc7a100t_0 → Выбрать пункт меню Program Device
  14. В открывшемся окне нажать Program
  15. Сопоставить поведение отладочной платы с SystemVerilog-описанием